Unidad Profesional Interdiciplinaria en Ingeniería y Tecnologías Avanzadas

P05: Convolución y correlación

Tabla de Contenidos

Integrantes

Objetivos

Introducción (Integración Numérica)

La integración numérica es una técnica matemática utilizada para encontrar el valor aproximado de una integral cuando no se puede obtener de manera exacta. En esta técnica se divide el intervalo de integración en intervalos mas pequeños y se utiliza una fórmula para aproximar el área bajo la curva en cada subintervalo.Teorema fundamental del calculo
syms x %crear símbolo de x
f = exp(-x.^2); %definir la función
integral = int(f,-1,1); %calcular la integral de la función de -1 a 1
disp(integral); %mostrar el valor de la integral en la consola
x_vals = linspace(-1,1,100); %crear 100 valores de x entre -1 y 1
y_vals = subs(f,x,x_vals); %evaluar la función en los valores de x
plot(x_vals,y_vals); %graficar la función
title('Ejemplo1'); %agregar título al gráfico
xlabel('x'); %etiquetar eje x
ylabel('f(x)'); %etiquetar eje y

Formulas de Newton Cotes

Dentro de este metodo encontramos ciertas reglas, como lo son:
  1. Regla del trapecio:Encontramos un polinomio de grado 1, para lo que necesitamos 2 puntos de interpolación. Y dentro de el ejemplo se nos muestra como donde .
  2. Regla de simpson:Aquí en lugar de encontrar el area de f dentro de los intervalos, buscamos el area de la parabola definida por los puntos de x.Para interpolar 3 puntos para encontrar un polinomio de segundo grado, que dentro del ejemplo se muestra como donde.
  3. Regla de los tres octavos de simpson:(Para polinomios de grado 3) Es una formula cerradan donde ocupamos los extremos de integración para encontrar la interpolación y aplicando simpson nos queda donde

Formulas cerradas de Newton-Cotes Compuestas

Si aplicamos las reglas que ya conocemos obtenemos:
  1. Regla compuesta del trapecio (Para nuestro ejemplo): dentro de
  2. Regla compuesta de Simpson (Para nuestro ejemplo): dentro de
En ambas el proceso es el mismo que en su version anterios, solamente que se replica un par de veces mas, dependiendo la cantidad de trapecios o simpson's que usemos para aproximarnos a la antiderivada de la función, cabe resaltar que el número de simpson's compuestos siempre va a ser par.
(Para ejemplificar un poco el tipo de graficas de estas reglas, tome otros ejemplos.)
% Definición del intervalo y la función a integrar
a = 0; b = pi; % Intervalo de integración
f = @(x) sin(x); % Función a integrar
 
% Especificación del número de subintervalos
n = 50; % Número de subintervalos
 
% Fórmula de la regla del trapecio compuesta
h = (b-a)/n; % Tamaño de cada subintervalo
x = linspace(a,b,n+1); % Puntos de división
y = f(x); % Alturas de la función en los puntos de división
int_aprox = (sum(y)-y(1)/2-y(end)/2)*h; % Fórmula de la regla del trapecio compuesta
 
% Gráfica de la función y los trapecios
x_func = linspace(a,b,1000); % Puntos para graficar la función
y_func = f(x_func); % Valores de la función
y_trapecios = f(x); % Alturas de los trapecios
y_trapecios([1,end]) = 0; % Corrección de las alturas de los extremos
 
figure; % Creación de la figura
hold on; % Mantenimiento de los gráficos anteriores
plot(x_func,y_func); % Graficar la función
area(x,y_trapecios,0); % Graficar los trapecios
xlabel('x'); ylabel('y'); % Etiquetas de los ejes
title(['Regla del trapecio compuesta (n=',num2str(n),')']); % Título con el valor de n
legend('Función','Trapecios'); % Leyenda de la gráfica
 
% Definición del intervalo y la función a integrar
a = 0; b = pi/2; % Intervalo de integración
f = @(x) sin(x.^2); % Función a integrar
 
% Especificación del número de subintervalos y la fórmula de Simpson compuesta
n = 6; % Número de subintervalos (debe ser par)
h = (b-a)/n; % Tamaño de los subintervalos
x = linspace(a,b,n+1); % Puntos de los subintervalos
S = 0; % Inicialización de la suma
for i = 1:2:n-1
S = S + f(x(i)) + 4*f(x(i+1)) + f(x(i+2)); % Fórmula de Simpson compuesta
end
int_aprox = S*h/3; % Aproximación de la integral
 
% Gráfica de la función y los subintervalos de integración
xx = linspace(a,b,100); % Puntos para graficar la función
yy = f(xx); % Valores de la función en los puntos
xx2 = linspace(a,b,n+1); % Puntos de los subintervalos para graficar
yy2 = f(xx2); % Valores de la función en los puntos
P = zeros(size(x)); P(2:2:end-1) = 4; P([1,end]) = 1; % Pesos de la regla de Simpson
yy3 = P.*yy2; yy3(2:2:end) = yy3(2:2:end)*4; % Ajuste de los pesos para la regla de Simpson compuesta
 
figure; % Creación de la figura
hold on; % Mantenimiento de los gráficos anteriores
plot(xx,yy,'b'); % Graficar la función
stem(xx2,yy2,'r','filled'); % Graficar los subintervalos de integración
patch([xx2(1:end-1);xx2(1:end-1);xx2(2:end);xx2(2:end)],[yy3(1:end-1);zeros(size(yy3(1:end-1)));yy3(2:end);zeros(size(yy3(2:end)))],'g'); % Graficar la aproximación de la integral
xlabel('x'); ylabel('y'); % Etiquetas de los ejes
title(['Regla de Simpson compuesta (n=',num2str(n),')']); % Título con el valor de n
legend('Función','Subintervalos','Aproximación de la integral'); % Leyenda de la gráfica

Cuadratura Gaussiana

Por último, dada una intedral definida de a a b, en general intenta aproximar por evaluaciones de la funcion en determinados puntos por determinadas constantes, elijiendo la cantidad de evaluaciones, pero con sus respectivas restricciones y diferencia de las formulas de Newton-Cote, en este metodo nos apoyamos de los polinomios de Legendre.

Polinomios de Legendre

Cuentan con ciertas prpiedades interesantes dependiendo de que grado sea el polinomio, entre ellas que sus raices se encuentran en los reales.
Ejemplo de cuadratura Gaussiana(no es el del video, tome otro de apoyo.)
% Definición del intervalo y la función a integrar
a = 0; b = 1; % Intervalo de integración
f = @(x) exp(x); % Función a integrar
 
% Especificación del número de puntos y los pesos de la cuadratura gaussiana
n = 4; % Número de puntos
xw = [-0.861136,0.861136,0.339981,-0.339981;0.347855,0.347855,0.652145,0.652145]; % Puntos y pesos
 
% Fórmula de la cuadratura gaussiana
x = ((b-a)*xw(1,:)+a+b)/2; % Cambio de variable para mapear los puntos al intervalo [a,b]
w = ((b-a)/2)*xw(2,:); % Escalamiento de los pesos
int_aprox = sum(w.*f(x)); % Fórmula de la cuadratura gaussiana
 
% Gráfica de la función y los puntos de la cuadratura
xx = linspace(a,b,100); % Puntos para graficar la función
yy = f(xx); % Valores de la función en los puntos
xx2 = linspace(x(1),x(end),100); % Puntos para graficar los puntos de la cuadratura
yy2 = zeros(size(xx2)); % Valores de la función en los puntos de la cuadratura
for i = 1:n
yy2 = yy2 + w(i)*f(x(i) + (xx2 - x(i))*(b-a)/(2*(n-1))); % Evaluación de los puntos de la cuadratura en la malla
end
 
figure; % Creación de la figura
hold on; % Mantenimiento de los gráficos anteriores
plot(xx,yy,'b'); % Graficar la función
plot(x,zeros(size(x)),'r*'); % Graficar los puntos de la cuadratura
plot(xx2,yy2,'g--'); % Graficar la cuadratura
xlabel('x'); ylabel('y'); % Etiquetas de los ejes
title(['Cuadratura gaussiana (n=',num2str(n),')']); % Título con el valor de n
legend('Función','Puntos de la cuadratura','Cuadratura gaussiana'); % Leyenda de la gráfica

Desarrollo

Resolver cada uno de los siguientes problemas.

Problema 1

PR04 - Problema 1
Realizar la convolución de las siguientes señales:
img_p04_1.png
Las señales involucradas en la convolución son las siguientes:
y
Sabemos que el resultado analítico de hacer la convolucion es:
Realizamos la convolución en MATLAB por un método numérico, para ello ejecutamos las siguientes líneas:
x = @(t) (0<=t & t<=1).*(-t+1)+(1<t & t<=2).*(t-1);
h = @(t) (t>=0 & t<=1).*(1);
convconm(x,h,[-1 4],[-0.25 3.25],[-0.5 1.5],[-0.5 1])
Además, presentamos la siguiente animación, la cual intenta imitar la graficacion por el software Desmos.
PR04_1.gif

Problema 2

PR04 - Problema 3
Realizar la convolución de las siguientes señales:
img_p04_3.png
Las señales involucradas en la convolución son las siguientes:
y
Sabemos que el resultado analítico de hacer la convolucion es:
Para realizar la solución de la convolución mediante Matlab, se utilizó la función convconm en este caso no se necesitaron modificaciones para utilizar dicha función, ya que la función originalmente está creada para realizar convoluciones.
f=@(t) (t>=0).*(t<=1).*t + (t>1).*(t<=2);
g=@(t) (t>=1).*(t<=3);
convconm3(f,g);
Como podemos observar, se realizó la convolución. A continuación se presenta el resultado de la animación de la convolución de trabajando sobre el resultado analítico obtenido en el PR04 3
convo2.gif

Problema 3

PR06 - Problema e)
Realizar la autocorrelación de:
Sabemos que el resultado analítico de hacer la autocorrelación de es:
Para la realizar la solución de la autocorrelación mediante Matlab, se utilizó la función convconm con las modificaciones pertinentes para el correcto funcionamiento del programa en este caso específico; si bien, la función originalmente está creada para realizar convoluciones, sabemos que: , entonces, podemos utilizar la convolución para obtener nuestra autocorrelación.
Para ejecutar la autocorrelación ejecutamoss las siguientes 3 líneas de código:
  1. la señal original
  2. la señal invertida horizontalmente
  3. y la llamada a la función
g = @(t) (t<=0) - 2*(t<=-3) + (t<=-4); %Señal invertida
f = @(t) (t>=0) - 2*(t>=3) + (t>=4); %Señal original
convconm2(g,f) %Llamamos a la función
Como podemos observar, utilizamos la convolución para realizar nuestra autocorrelación. A continuación se presenta el resultado de la animación de la autocorrelación de trabajando sobre el resultado analítico obtenido en el PR06 e)
3_autocorrelacion.gif

Problema 4

PR06 - Problema f)
Realiza la correlación de
con las señales definidas en los ejercicios anteriores, utiliza la equivalencia que prefieras.
Las señales involucradas en la convolución son las siguientes:
y
Sabemos que el resultado analítico de hacer la convolucion es:
Realizamos la convolución en MATLAB por un método numérico, para ello ejecutamos las siguientes líneas:
u=@heaviside;
x=@(t)u(t)-2*u(t-2)+u(t-4);
h=@(t)u(t)-2*u(t-3)+u(t-4);
y=@(t)h(-t);
convconm(x,y,[-6 6], [-5 5],[-5 5],[-4 4])
Además, presentamos la siguiente animación, la cual intenta imitar la graficacion por el software Desmos.
P05_4.gif